Next | Prev | Up | Top | Contents | Index

Programming Slave DMA

In Slave DMA, an EISA card that does not have DMA logic is commanded by the EISA Interface Unit and 82350 chip set (see Figure 17-1) to perform a series of transfers into memory.

The kernel supplies a unique set of functions for managing Slave DMA, unrelated to the DMA functions for Bus-master DMA. The functions that operate on EISA DMA maps are summarized in Table 17-4.

Functions for EISA DMA
FunctionHeader FilesCan SleepPurpose
eisa_dma_disable(D3) eisa.h & types.hNDisable recognition of hardware requests on a DMA channel.
eisa_dma_enable(D3) eisa.h & types.hNEnable recognition of hardware requests on a DMA channel.
eisa_dma_free_buf(D3) eisa.h & types.hNFree a previously allocated DMA buffer descriptor.
eisa_dma_free_cb(D3) eisa.h & types.hNFree a previously allocated DMA command block.
eisa_dma_get_buf(D3) eisa.h & types.hYAllocate a DMA buffer descriptor.
eisa_dma_get_cb(D3) eisa.h & types.hYAllocate a DMA command block.
eisa_dma_prog(D3) eisa.h & types.hYProgram a DMA operation for a subsequent software request.
eisa_dma_stop(D3) eisa.h & types.hNStop software-initiated DMA operation and release channel.
eisa_dma_swstart(D3) eisa.h & types.hYInitiate a DMA operation via software request.

The EISA attachment hardware has many options for performing Slave DMA, and most of these options are reflected in the contents of the eisa_dma_cb and eisa_dma_buf data structures (see the eisa_dma_buf(D4) and eisa_dma_cb(D4) reference pages, in addition to the reference pages listed in Table 17-4). By setting appropriate values declared in sys/eisa.h into these structures, you can program most varieties of Slave DMA.


Next | Prev | Up | Top | Contents | Index